package ca.canuckcoding.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; /** * @author Jason Robitaille */ public class JarResource { protected Class specific; private String path; public JarResource(String resource) { this(resource, null); } public JarResource(String resource, Class specificClass) { path = resource; specific = specificClass; } public File extract() { String tmpFilePath = System.getProperty("java.io.tmpdir"); File dest = new File(tmpFilePath, path.substring(path.lastIndexOf("/")+1)); return extract(dest); } public File extract(String dest) { return extract(new File(dest)); } public File extract(File dest) { try { if(dest.exists()) dest.delete(); InputStream in = null; if(specific==null) { in = new BufferedInputStream(this.getClass().getResourceAsStream(path)); } else { in = new BufferedInputStream(specific.getResourceAsStream(path)); } OutputStream out = new BufferedOutputStream(new FileOutputStream(dest)); byte[] buffer = new byte[2048]; for (;;) { int nBytes = in.read(buffer); if (nBytes <= 0) break; out.write(buffer, 0, nBytes); } out.flush(); out.close(); in.close(); return dest; } catch (Exception e) { e.printStackTrace(); return null; } } }